def pl(arg1, arg2):
    arg1 = 1002
    print(f"arg1:{id(arg1)}")
    print(f"arg2:{id(arg2)}")


n1 = 10
n2 = ["22", "33"]
print(f"n1:{id(n1)}")
print(f"n2:{id(n2)}")
print(f"n1:{(n1)}")
print(f"n2:{(n2)}")
pl(n1, n1)


# 函数的返回值：python中是可以返回多个返回值的，返回多个值时，类型为元组

# 可变个数参数
def func2(*args):
    print(f"args: {args}")
    print(f"args: {type(args)}") #args的类型为元组

func2("2" ,2 , "4",True)

# 可变个数的关键字参数
def func3(**args):
    print(f"args:{args}")  # 此时args的类型是字典
    print(f"args:{type(args)}")
func3(a=10,b=20,c=30)

def func4(*args1, **args2):
    pass

# def func5( **args2 , *args1): # 当有可变个数的位置形参和可变个数的关键字参数时，可变个数的关键字参数必须时最后一个参数
#    pass



# python 异常处理
import traceback as tb
try:
    res = 1 / 0
# except BaseException as e:
#     print(f"error:{e}")
except:
    tb.print_exc()
else:
    print(f"res: {res}")
finally:
    print(f"----finally 一定会执行----")


